package com.lechi.web.vo;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serial;
import java.io.Serializable;

/**
 * 设备观测要素对象 iot_sensor
 *
 * @author yangguang
 * @date 2024 -03-20
 */
@Data
public class IotSensorVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 23423423431L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 观测要素名称
     */
    @NotBlank(message = "参数sensorName不能为空")
    @Length(max = 200, message = "参数sensorName长度不能大于{max}")
    private String sensorName;

    /**
     * 要素值类型
     */
    @NotBlank(message = "参数valueType不能为空")
    @Pattern(regexp = "^(float|integer|string)$", message = "参数valueType格式不正确")
    private String valueType;

    /**
     * 小数位数，0表示整数，1表示1位小数
     */
//    @Max(value = 5, message = "参数sensorDigit最大保留{value}小数点")
    private Integer sensorDigit;

    /**
     * 单位
     */
//    @NotBlank(message = "参数unit不能为空")
    @Length(max = 100, message = "参数unit长度不能大于{max}")
    private String unit;

    /**
     * 观测要素标识
     */
//    @Pattern(regexp = "^[a-zA-Z0-9]{1,30}$", message = "只能包含字母和数字，长度1-30")
    private String sensorSign;

    /**
     * 最大值标识
     */
    @Pattern(regexp = "[0-1]$", message = "参数maxSign格式不正确")
    private String maxSign;

    /**
     * 最小值标识
     */
    @Pattern(regexp = "[0-1]$", message = "参数minSign式不正确")
    private String minSign;

    /**
     * 平均值标识
     */
    @Pattern(regexp = "[0-1]$", message = "参数avgSign格式不正确")
    private String avgSign;

    /**
     * 累积
     */
    @Pattern(regexp = "[0-1]$", message = "参数sumSign格式不正确")
    private String sumSign;

    /**
     * 观测要素名称
     */

    private String note;

    /**
     * 图标路径
     */
    @NotBlank(message = "观测要素图标不能为空")
    private String imgUrl;

    /**
     * 排序
     */
    private Integer sort;

}
